大家應該都有去麥當勞點餐過的經驗,如果今天我想來個二號餐(雙層牛肉吉士堡),不可能走進去跟做薯條的人說我要一份薯條,再去漢堡區說我要一份漢堡幫我製作,最後去飲料區說我要大杯零卡可樂吧(應該會被店員趕出來XD)。
我們所有人點餐的窗口都是向櫃檯的服務員點餐,透過服務員將所需要的餐點指派給負責的人去做,最後再將所有餐點交給我們,轉換成物件導向的設計模式,就稱之為『Facade』!
為子系統中的一組介面定義一個統一介面。Facade模式定義了一個更高層的介面,使子系統更加容易使用。

(圖片來源:https://images.cnblogs.com/cnblogs_com/terrylee/Facade02.jpg)

class Program
    {
        static void Main(string[] args)
        {
            Clerk clerk = new Clerk();
            clerk.MakeOrder();
        }
    }
    class Clerk
    {
        private Hamburger_Dept hamburger_Dept = new Hamburger_Dept();
        private Fries_Dept fries_Dept = new Fries_Dept();
        private Nugget_Dept nugget_Dept = new Nugget_Dept();
        public void MakeOrder()
        {
            hamburger_Dept.MakeHamburger();
            fries_Dept.MakeFries();
            nugget_Dept.MakeNugget();
            Console.WriteLine("所有餐點製作完成");
        }
    }
    class Hamburger_Dept
    {
        public void MakeHamburger()
        {
            Console.WriteLine("漢堡製作完成");
        }
    }
    class Fries_Dept
    {
        public void MakeFries()
        {
            Console.WriteLine("薯條製作完成");
        }
    }
    class Nugget_Dept
    {
        public void MakeNugget()
        {
            Console.WriteLine("雞塊製作完成");
        }
    }
-結果
Facade模式可以應用於以下幾種情況: